package day4;

import java.lang.reflect.Field;
import java.util.Date;
//获取类中的资源
public class Person extends Animal{
    public Person(Integer id){
        this.id=id;
        System.out.println("运行有参构造");
    }
private Person(){
    System.out.println("运行无参构造");
}
    String name;
    private Integer id;
    protected Double money;
    public Date birthday;
    public void test1(){
        System.out.println("运行测试1");
    }
    private void test2(String name,Integer num){
        System.out.println("运行测试2："+name+" "+num);
    }
    public int test3(int a,int b){
        System.out.println("运行test3："+a+" "+b);
        return a+b;
    }

    public static void main(String[] args) {
        //1.获取类对象
        Person p=new Person(10);
        Class<?> c=p.getClass();
        //2.通过类对象调用getXX() 获取类的资源
        String name=c.getName();
        System.out.println("全类名"+name);
        String simpleName=c.getSimpleName();
        System.out.println("类名"+simpleName);
        String superName=c.getSuperclass().getSuperclass().getName();
        System.out.println("超类名"+superName);
        System.out.println("------------获取属性Field-----------");
        Field[] fs=c.getDeclaredFields();//获取类中所有属性 but不包括父类
        for(Field f:fs){
            //f就是类中的每个属性
            String filedName=f.getName();
            Class type=f.getType();
            System.out.println("属性名"+filedName+"类型"+type);
        }
        System.out.println("------------");
        Field[] fs2=c.getFields();//能获取类中的公开资源 包括自己和父类的
        for(Field f:fs2){
            //f就是类中的每个属性
            String filedName=f.getName();
            Class type=f.getType();
            System.out.println("属性名"+filedName+"类型"+type);
        }

    }
}
class Animal{
    private int height;
    int age;
    protected String sex;
    public String addr;
}
class TestPerson{

}

